Modifying an array of cells in a cell matrix for a step-sequencer

ABSTRACT

A method of operating a UI for controlling a virtual musical instrument can include receiving a first input corresponding to a selection of an array of cells within a cell matrix, each array of the cell matrix assigned to audio sample data stored in a computer-readable medium that, when triggered, causes the audio sample data to output corresponding audio, and each cell within its particular array of the cell matrix, in response to being selected for playback and upon being triggered to begin playback, causes the audio sample data corresponding to the cell&#39;s particular array to be played. The method can further include receiving a second input corresponding to a changing of a number of cells within the particular selected array; and changing the number of cells within the selected array based on the second input and maintaining a number of cells in other arrays within the cell matrix.

PRIORITY CLAIM

This application claims the benefit of U.S. provisional patentapplication No. 62/566,288, filed Sep. 29, 2017, which is hereinincorporated by reference in its entirety for all purposes.

This application is related to co-pending U.S. patent application Ser.No. 15/963,791, filed on Apr. 26, 2018, entitled STEP SEQUENCER FOR AVIRTUAL INSTRUMENT; and U.S. patent application Ser. No. 15/963,811,filed on Apr. 26, 2018, entitled DYNAMIC NAVIGATION OBJECT FOR ASTEP-SEQUENCER. The disclosures of which are herein incorporated byreference in their entirety for all purposes.

BACKGROUND

Virtual musical instruments, such as MIDI-based or software-based rhythmsequencers (e.g., drum sequencers, drum machines, step sequencers),keyboards, guitars, basses, and the like, are ubiquitous in contemporarymusic across many different genres. Virtual instruments allow a user toplay virtually any sound that a typical acoustic instrument could playand much more. Amateur musicians with little to no experience on aparticular instrument or with music composition may find that virtualinstruments are more intuitive and can provide simplified ways ofcreating music without needing the manual dexterity or knowledge ofmusic theory that a conventional instrument may require.

Software-based music production tools can be used to create manydifferent genres of music and provide resources that can allow a user toquickly and easily create musical compositions without the need for anyappreciable proficiency at a particular instrument. With respect to drumsequencers, rhythmic passages can be created in real-time, in amethodical step-wise fashion, or a combination thereof. Complex drumbeats and accompanying notes, chords, melodies, etc., can be created bya user, and in some cases, the software can provide shortcuts (e.g.,“canned” loops, presets, etc.) that can make producing music even easierwithout the need for understanding its theoretical underpinnings. Forinstance, music production software may help a user create a drumsequence (i.e., rhythm accompaniment) without requiring the user tounderstand the corresponding music theory (e.g., musical key, timesignature, virtual instrument tunings, etc.). As a result,software-based music production tools have become popular across manygenres of music.

Conventional step sequencers, in particular, can be highly intuitive andnovices may be able to create musical beats within minutes of use. Stepsequencers are typically easy to operate, they can usually utilize bothsamples of individual sounds and full rhythmic loops, and mayincorporate any of a variety of effects to alter the sound of thesamples or loops, including amplification-based effects (e.g.,distortion, volume control), frequency-based effects (e.g., equalization(EQ) filters, harmonizers), and delay-based effects (e.g., reverb, echo,chorus), to name a few. However, despite the usefulness and advancementsin step sequencers over the years, many complain that stepsequencer-based rhythmic sequences tend to sound robotic, or aremusically and structurally limited because of the nature of the typicalmatrix-based interface. Thus, more improvements to step-sequencers areneeded to enhance their flexibility and perceived musical authenticity.

Although this document refers to music production tools generally asdigital audio workstations (DAWs)(e.g., touch (virtual) instrument inGarageBand® for iOS®, Logic Pro™ etc.) and/or step sequencers, drummachines, drum sequencers, etc., it should be understood that anysuitable production tool can implement the concepts and embodimentsdescribed herein and can additionally include, but are not limited to,software sequencers, synthesizers, Musical Instrument Digital Interface(MIDI) keyboard workstations, software plug-ins, and the like.

SUMMARY

In certain embodiments, a method of operating a UI for controlling avirtual musical instrument implemented on a display can includereceiving a first input corresponding to a selection of an array ofcells within a cell matrix, the cell matrix including one or more arraysof cells, each cell within the cell matrix arranged in a sequentialarrangement within its corresponding array of cells, each array of thecell matrix assigned to audio sample data stored in a computer-readablemedium that, when triggered, causes the audio sample data to outputcorresponding audio, and each cell within its particular array of thecell matrix, in response to being selected for playback and upon beingtriggered to begin playback, causes the audio sample data correspondingto the cell's particular array to be played. The method can furtherinclude receiving a second input corresponding to a changing of a numberof cells within the particular selected array and changing the number ofcells within the selected array based on the second input andmaintaining a number of cells in other arrays within the cell matrix.

In certain embodiments, the second input can cause a playback startpoint of the selected array to move from a first location at a firstcell of the selected array to a second location at a second cell of theselected array. The second input can include a touch input correspondingto a detected touch moving from the first location to the secondlocation. Alternatively or additionally, the second input can be areceived from a computer peripheral such as a computer mouse or stylus,from a smart mobile device, or the like. The method can further includetriggering a playback of the audio sample corresponding to each selectedcell within the matrix based on each selected cell's sequential orderwithin its array and the selected cell's sequential order with respectto other cells within the cell matrix. The playback of each array ofcells within the cell matrix may begin simultaneously with a first cellat a beginning of each array of cells.

In some cases, the method may include triggering a playback of the audiosample corresponding to each selected cell based on the number of cellswithin each selected cell's corresponding row or triggering a playbackof the audio sample corresponding to each selected cell based on acolumn of the selected cell within the cell matrix. The matrix cancorrespond to a sequenced rhythmic pattern. The second input cancorrespond to a removing of one or more cells from a beginning or an endof the selected array or the second input can correspond to a change ina playback timing of a beginning or an end of the selected array.

In some embodiments, a system may include one or more processors and oneor more non-transitory computer-readable storage mediums containinginstructions to cause the one or more processors to perform operationsincluding: receiving a first input corresponding to a selection of anarray of cells within a cell matrix, the cell matrix including one ormore arrays of cells, each cell within the cell matrix arranged in asequential arrangement within its corresponding array of cells, eacharray of the cell matrix assigned to audio sample data stored in acomputer-readable medium that, when triggered, causes the audio sampledata to output corresponding audio, and each cell within its particulararray of the cell matrix, in response to being selected for playback andupon being triggered to begin playback, causes the audio sample datacorresponding to the cell's particular array to be played, receiving asecond input corresponding to a changing of a number of cells within theparticular selected array; and changing the number of cells within theselected array based on the second input.

In some embodiments, the second input can cause a playback start pointof the selected array to move from a first location at a first cell ofthe selected array to a second location at a second cell of the selectedarray, and/or the second input may include a touch input correspondingto a detected touch moving from the first location to the secondlocation. In some cases, the instructions can further cause the one ormore processors to perform operations including: triggering a playbackof the audio sample corresponding to each selected cell within thematrix based on each selected cell's sequential order within its arrayand the selected cell's sequential order with respect to other cellswithin the cell matrix. The playback of each array of cells within thecell matrix may begin simultaneously with a first cell at a beginning ofeach array of cells. The instructions may further cause the one or moreprocessors to perform operations including: triggering a playback of theaudio sample corresponding to each selected cell based on the number ofcells within each selected cell's corresponding row; or triggering aplayback of the audio sample corresponding to each selected cell basedon a column of the selected cell within the cell matrix. The secondinput can correspond to a removing of one or more cells from a beginningor an end of the selected array or the second input may correspond to achange in a playback timing of a beginning or an end of the selectedarray.

In further embodiments, a non-transitory computer-program producttangibly embodied in a machine-readable non-transitory storage mediummay include instructions configured to cause one or more processors to:receive a first input corresponding to a selection of an array of cellswithin a cell matrix, the cell matrix including one or more arrays ofcells, each cell within the cell matrix arranged in a sequentialarrangement within its corresponding array of cells, each array of thecell matrix assigned to audio sample data stored in a computer-readablemedium that, when triggered, causes the audio sample data to outputcorresponding audio, and each cell within its particular array of thecell matrix, in response to being selected for playback and upon beingtriggered to begin playback, causes the audio sample data correspondingto the cell's particular array to be played. The instructions mayfurther be configured to cause the processor(s) to receive a secondinput corresponding to a changing of a number of cells within theparticular selected array; and change the number of cells within theselected array based on the second input. In some cases, the secondinput can cause a playback start point of the selected array to movefrom a first location at a first cell of the selected array to a secondlocation at a second cell of the selected array, and/or the second inputcan include a touch input corresponding to a detected touch moving fromthe first location to the second location. Alternatively, the input canbe provided via a computer peripheral device, such as a computer mouseor stylus pen.

In certain embodiments, the instructions can further cause the one ormore processors to perform operations including triggering a playback ofthe audio sample corresponding to each selected cell within the matrixbased on each selected cell's sequential order within its array and theselected cell's sequential order with respect to other cells within thecell matrix. Playback of each array of cells within the cell matrix canbegin simultaneously with a first cell at a beginning of each array ofcells. The instructions may further be configured to cause the one ormore processors to perform operations including: triggering a playbackof the audio sample corresponding to each selected cell based on thenumber of cells within each selected cell's corresponding row, ortriggering a playback of the audio sample corresponding to each selectedcell based on a column of the selected cell within the cell matrix. Insome implementations, the second input can correspond to a removing ofone or more cells from a beginning or an end of the selected array orthe second input may correspond to a change in a playback timing of abeginning or an end of the selected array.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures.

FIG. 1 shows an application selection interface for a suite of virtualinstruments, according to certain embodiments.

FIG. 2 shows a user interface for a step sequencer displayed on a hostcomputing device, according to certain embodiments.

FIG. 3A shows a user setting an adjustable parameter for an audiocharacteristic of a corresponding sample for a plurality of cells withina row of a cell matrix, according to certain embodiments.

FIG. 3B shows an expansion of a row within a cell matrix and a settingof an adjustable parameter for an audio characteristic in response to auser input, according to certain embodiments.

FIG. 4 shows a user setting a number of notes within a plurality ofcells of a cell matrix, according to certain embodiments.

FIG. 5 shows a user setting a probability of a note trigger for aplurality of cells within a cell matrix, according to certainembodiments.

FIG. 6A shows a first portion of a cell matrix with dynamic navigationobjects, according to certain embodiments.

FIG. 6B shows a second portion of a cell matrix with dynamic navigationobjects, according to certain embodiments.

FIG. 7A shows a user setting a start and end point within an array ofcells within a cell matrix, according to certain embodiments.

FIG. 7B shows a synchronous playback of cells within a cell matrix,according to certain embodiments.

FIG. 7C shows an asynchronous playback of cells within a cell matrix,according to certain embodiments.

FIG. 8 is a high level flow diagram showing aspects of a method settingan adjustable parameter in a step sequencer, according to certainembodiments.

FIG. 9 is a high level flow diagram showing aspects of a method ofcontrolling a virtual instrument implemented on a display, according tocertain embodiments.

FIG. 10 is a simplified flow diagram illustrating aspects of a method ofadjusting a parameter in a virtual instrument, according to certainembodiments.

FIG. 11 is a simplified flow diagram illustrating aspects of a method ofswitching between groups of cells in a cell matrix, according to certainembodiments.

FIG. 12 is a simplified flow diagram illustrating aspects of a method ofmodifying a playback of a virtual instrument implemented on a display,according to certain embodiments.

FIG. 13 illustrates an example of a system that can enable a user tooperate a step sequencer on a software-based music application,according to certain embodiments.

FIG. 14 illustrates an example of a computer system operable to runsoftware configured to control a step sequencer, according to certainembodiments.

FIG. 15 illustrates a simplified diagram of a distributed system forproviding a system and method for operating a step sequencer, accordingto certain embodiments.

DETAILED DESCRIPTION

Embodiments of the invention generally relate to software configured forgenerating, recording, editing, and producing musical performances. Morespecifically, some embodiments of the invention relate to improvementsin step-sequencing in a virtual instrument.

In the following description, for the purpose of explanation, numerousexamples and details are set forth in order to provide an understandingof embodiments of the present invention. It will be evident, however, toone skilled in the art that certain embodiments can be practiced withoutsome of these details, or with modifications or equivalents thereof.

In some embodiments, systems and methods for operating a virtualinstrument can include certain features that improve functionality andcan streamline the user experience. For example, a method of operating aUI for controlling a step sequencer can include receiving an input(e.g., user input or automation) corresponding to a selection of a cellwithin a particular array (e.g., row of cells) in a cell matrix, whereeach cell is arranged in a particular sequential arrangement within itscorresponding array of cells. For instance, the cell matrix may bearranged in a row-and-column configuration. In some cases, each array ofthe cell matrix can be assigned audio sample data and activates theaudio sample when a corresponding cell is played. The method furtherincludes determining a duration of the received input, adjusting anadjustable parameter (and corresponding audio characteristic) of theselected cell based on the input in response to determining that theinput's duration is below a threshold time, and expanding a size of arow containing the selected cell and adjusting the adjustable parameterof the selected cell based on the input in response to determining thatthe input's duration is at or above a threshold time. The audiocharacteristic can correspond to at least one of a velocity, a volume, aprobability of triggering, or a number of notes within the correspondingcell. Cells are also commonly referred to as “steps.”

In further embodiments, dynamic thumbnail images can be used to switchbetween groupings of cells in the cell matrix. A dynamic thumbnail imagemay show a miniaturized display of the step sequencer matrix showing afirst number of sequenced visible cells or a second number of sequencedvisible cells and may each thumbnail may be selected to switch a currentview to the selected thumbnail's corresponding number of cells in thecell matrix.

In certain embodiments, a length of each array in a cell matrix can beadjusted such that the starting point or ending point of a particulararray may be shifted in time, which may be played synchronous orasynchronous with respect to other arrays in the cell matrix. Forinstance, a method can include receiving a first input corresponding toa selection of an array in a cell matrix, receiving a second inputcorresponding to a changing of a number of cells within the selectedarray, and triggering a playing back of an audio sample corresponding toeach selected cell based on each selected cell's sequential order withrespect to the other cells and the number of cells with each selectedcell's corresponding array.

In some embodiments, the step sequencer may generate MIDI data as outputthat is then sent to a sampler that plays back sample data associatedwith certain MIDI notes. When recording the output of the stepsequencer, a sequence of MIDI events are captured into the recordedsong, which can later be modified and adjusted, as would be understoodby one of ordinary skill in the art. In some cases, the MIDI data canalso be used to trigger other types of instruments that support the MIDIprotocol. In certain implementations, playback can be performed by asampler, which receives the MIDI data provided by the sequencer andperforms synthesis operations (e.g., sound shaping) on the stored sampledata, and a chain of audio processing plugins, which can further modifythe sound produced by the sampler.

FIG. 1 shows an application selection interface 100 for a suite ofvirtual instruments, according to certain embodiments. Applicationselection interface (“interface”) 100 is shown on a tablet computer 105,however any host computing device can be any suitable computing deviceincluding, but not limited to, a desktop computer, a laptop computer, asmart phone, a PDA, a wearable devices (e.g., smart watch, smartglasses), a virtual reality/augmented reality (AR/VR) system, or thelike. Interface 100 shows a suite of selectable application that mayinclude any number of virtual instruments including, but not limited to,drum simulators, orchestral virtual instruments, virtual basses,keyboards, guitars, and world instrument, amplifier simulators, audiorecorders, and the like. The applications are configured on a virtualcarousel that rotates through the selectable applications. Referring toFIG. 1, interface 100 shows a virtual keyboard application 114, multiplevirtual drum applications 110, and an amplifier simulator 112 on asingle display, however applications can populate multiple pages, asindicated by page identifier 130.

Virtual drum applications 110 can include a variety of drum relatedprograms including smart drum 120, acoustic drums 122, beat sequencer124 and more sounds 126. Smart drums 120 may correspond to a drumprogram that alters the relative loudness and complexity of a drumpattern based on a two-dimensional (2D) user input. Acoustic drums 122can include a virtual drum set with corresponding virtual trigger padsto trigger assigned samples of drum sounds in response to a user input(e.g., touch inputs). More sounds 126 can include a number of differentvirtual drum sets that function similar to acoustic drums 122, but withdifferent types of triggers and different associated sounds. Forexample, some drum sets can include electronic drum kits, vintage kits,live-sound kits, house music kits, etc. Beat sequencer 124 can include astep sequencer (also referred to as a drum machine, drum sequencer, beatsequencer, etc.), as shown in FIG. 2 and described in detail throughoutthe present disclosure.

FIG. 2 shows a user interface for a step sequencer 200 displayed on hostcomputing device 105, according to certain embodiments. Step sequencer200 includes a cell matrix 210 having one or more arrays ofuser-selectable cells (e.g., rows of cells) configured in arow-and-column configuration. Cell matrix 210 can include arrays220(A)-220(H), each shown as having 16 cells shown in groups of 4.However, any suitable number of arrays can be included with any suitablenumber of cells per array and in any particular grouping. Array 220(A)can include cells A1, A2, A3 . . . A16, array 220(B) can include cellsB1, B2, B3 . . . B16, and so on to array 220 (H), which can include H1,H2, H3, . . . H16. Each array can be assigned a particular sample or setof samples such that any cell that is selected (see, e.g., FIG. 6A forselected and unselected cells), when triggered for playback (e.g., by aplayback controller), will play the sample assigned to the array that itresides in. The cells within each array of the cell matrix are typicallyconfigured in a horizontal sequential arrangement, as shown in FIG. 2.However, some embodiments may have arrays that are vertically arranged.The cells are typically played back in the order of the sequentialarrangement. For example, when the step sequencer begins playing,selected cells in column 1 (e.g., cells A1, B1, C1, . . . H1) are playedsimultaneously, followed by the selected cells of column 2 (e.g., cellsA2, B2, C2 . . . H2), then column 3, and so on, as would be understoodby one of ordinary skill in the art.

Referring to FIG. 2, instruments 230(A)-(H) can be the samples assignedto arrays 220(A)-(H), respectively. That is, each array of the matrixcan correspond to a particular audio sample data stored in acomputer-readable medium, and each cell, in response to being selectedfor playback and upon being triggered to begin the playback, causes theaudio sample data of its corresponding array to output audiocorresponding to its corresponding audio sample data. For example, whenA2 is selected by a user and triggered during playback, audio sample230(A) (e.g., a tambourine sound) is played. Audio sample 230(A) canalso play when A4, A5, A6, or any cells of array 220(A) are selected andtriggered for playback. Similarly, audio sample 230(b) may play when anyof cells B1-B16 are selected and triggered for playback, and so on foreach set of arrays and corresponding cells.

Step sequencer 200 may include a playback control 240 that, in responseto receiving a playback input, causes a real-time playback of thecorresponding audio sample data for each selected cell by triggering theplayback in an order defined by a tempo (e.g., the speed of playingthrough the sequence of cells) and the sequential arrangement of thecells. The playback control may include a user interface including anumber of playback input controls, such as a play button, stop button,back-to-beginning button (e.g., return to the first column of cells),pause button, and the like, as shown in FIG. 2. By way of example, whenthe play button is pressed (e.g., a playback input), each cell in eacharray (e.g., row) that is selected for playback is played in sequentialorder from column 1 to column 16. As each column of cells is played insequence, typically only the corresponding audio sample for eachselected cell is played. In some embodiments, more or fewer cells may beincluded in each array. For example, some arrays may have more than 16cells, which may extend beyond a viewable area within the display of thehost computing device, as further discussed below with respect to FIGS.6A and 6B.

In some embodiments, each cell can include an adjustable parameter 250that, in response to an adjustment input, changes an audiocharacteristic of the cell's corresponding audio sample. Adjustableparameters 250 can include a step on/off control 250(1), velocity250(2), note repeat 250(3), probability 250(4) and loop start/end250(5), however other adjustable parameters are possible (e.g., effects(e.g., echo, reverb, drive, distortion, harmonizer, etc.), stereo pan,etc.).

When step sequencer is set to step on/off mode 250(1), selecting aparticular cell (e.g., touching a cell in a touch sensitive interface,selecting a cell with a mouse-controlled cursor, etc.) may cause thecell to toggle between a playback enabled and disabled setting. Forexample, referring to FIG. 6A, cells A1, A10, and A16 of array 220(A)are selected to enable playback, while cells A2-A9 and A11-A15 are notselected to enable playback (e.g., they have a disabled playbacksetting). Any number of cells can be selected or de-selected in the cellmatrix. When step on/off mode 250(1) is selected, the adjustableparameter can be the selecting/deselecting particular cells, and theaudio characteristic may be playing or not playing the correspondingsample.

Velocity 250(2) may correspond to a speed or force that a key or buttonis pressed on an instrument. For example, the harder a note is played,the higher the velocity. In electronic music (e.g., virtualinstruments), velocity is often measured within a range of discretevalues. In MIDI for example, velocity is typically measured on a scalefrom 0 to 127, with 127 being the highest value that can be registered,and 0 being the lowest. A value of 0 typically corresponds to the notebeing “off,” while a value of 1 is typically the lowest dynamic that canbe played. With respect to the application of velocity to the individualcells of cell matrix 210, velocity (e.g., the “loudness” that thecorresponding sample is played) can be set by a user, as depicted inFIGS. 3A-3B, as further described below. It would be understood by oneof ordinary skill in the art that any range of values, MIDI orotherwise, can be used to represent cell velocity values.

In some embodiments, a user can set a velocity level within a particularcell by setting a level (e.g., marker, bar, number, etc.) within thecell via touch, input device control (e.g., stylus, mouse, etc.) orother input means. Referring to FIG. 3A, as a user moves their fingerwithin each cell, the velocity level is set based on the user's touchlocation within the cell. Any suitable representation of a velocitylevel can be used. One of ordinary skill in the art with the benefit ofthis disclosure would understand the many variations, modifications, andalternative embodiments thereof. In some embodiments, when velocity250(2) is selected the adjustable parameter can be the set level withineach particular cell, and the audio characteristic may be the loudnessor intensity of the played audio sample.

Note repeat 250(3) may correspond to a number of notes played within acell. For example, a cell may have a default setting of playing thecorresponding sample a single time when that cell is triggered forplayback. In some embodiments, when velocity 250(3) is selected theadjustable parameter can be the set level within each particular cell,and the audio characteristic may be the number of times that the audiosample is triggered (played) in response to a single trigger of acorresponding single selected cell. One example of setting differentnote repeat values within a cell matrix is shown in FIG. 4 and furtherdescribed below.

Probability 250(4) may correspond to a percentage chance that a selectedcell will trigger playback of a corresponding sample. This may be usefulwhen a user wants to give a particular performance a more “live” ornuanced feel. For example, a cell may have a default setting of playingthe corresponding sample at 100% probability, such that a selected cellmay trigger its corresponding sample every time. With a probability setto 50%, the selected cell may trigger playback approximately half thetime. In some embodiments, when probability 250(4) is selected theadjustable parameter can be the set level of probability within eachparticular cell, and the audio characteristic may be the percentagechance that the audio sample is triggered (played) in response to asingle trigger of a corresponding single selected cell. One example ofsetting a probability within a particular cell of a cell matrix is shownin FIG. 5 and further described below.

Loop start/end 250(5) may correspond to a setting that allows a user tochange a number of cells within an array. For example, a user can removecells from the beginning on an array and/or the end of an array.Alternatively or additionally, some embodiments may not “remove” cellsfrom an array, but rather limits playback to a certain range of cellswithin that array. Some examples of changing a number of cells in anarray are shown in FIG. 7A and further described below.

In some embodiments, an array can increase in size when a user isinterfacing with its cells to make it easier to enter more precisevalues for the adjustable parameters. For example, when a user touches,presses, or “clicks” (e.g., via a mouse button or stylus) at a locationwithin a particular cell, a corresponding adjustable parameter can beset. In some cases, in response to an extended select-and-maintainedhold condition beyond a threshold time (e.g., 1 second or any suitabletime frame), a displayed size of the array of the particular cell isincreased and the adjustable parameter of the particular cell isadjustable according to a higher level of precision as compared toadjustments made to the adjustable parameter when the array is at anormal size. This is further described below with respect to FIGS.3A-3B.

It should be understood that step sequencer 200 may include operativefeatures similar to that of conventional step sequencers (in addition tothe novel concepts described herein). For example, step sequencers canplay multiple arrays simultaneously as a “play head” moves fromleft-to-right along the cell matrix. Some embodiments may playdifferently (e.g., right to left, or combinations as in “ping pong”operation), or may have arrays configured differently (e.g., playvertically top to bottom or vice versa). The term “play head”conventionally refers to a physical interface that interacts withcertain media (e.g., laser on a laser disc, tape head on magnetic tape,etc.). With respect to the present disclosure, a play head may refer toa present column (e.g., or selection) of cells being played (e.g., seeplay head 630(1) of FIG. 6A). It should be understood that play head isnot intended to necessarily mean a physical device, but a reference to aparticular location of playback with the cell matrix. Play head may alsobe referred to as a “play position,” a “position,” a “played column,” orother suitable identifier, as would be understood by one of ordinaryskill in the art with the benefit of this disclosure.

FIG. 3A shows a user setting an adjustable parameter for an audiocharacteristic of a corresponding sample assigned to a plurality ofcells within an array, according to certain embodiments. For purposes ofsimplification, step sequencer 300 is shown to be similar to stepsequencer 200, however it should be understood that other configurationsas possible (e.g., different number of arrays, cells per array,adjustable parameters, etc.). Referring to FIG. 3A, step sequencer 300shows a user's finger moving along array 320(D) in a continuous pathacross each of the cells on a touch-sensitive interface (e.g., touchsensitive display of a tablet computer). Array 320(D) can include cellsD1-D16, however more cells or fewer cells are possible. Audio sample330(D) (e.g., a closed hi-hat sound) is assigned to each cell of array320(D). Velocity 350(2) is selected as the adjustable parameter and theuser's finger sets the velocity of each cell as it passes through. Forexample, finger 380 touches cell D1 and sets the velocity based on thelocation of finger 380 within cell D1, which is approximately 40% (e.g.,or 50 in a MIDI range). As finger 380 continues along array 320(D), theadjustable parameter for each cell is set based on the location of thefinger with respect to the cell. For example, D3 is set to 85% (101 inMIDI range), D6 is set to 15% (19 in MIDI range), D11 is set to 75% (95in MIDI range), and D16 is set to 12% (15 in MIDI range). Note that ifstep on/off 350(1) was selected instead of velocity 350(2), then eachcell would be toggled between selected/de-selected based on a currentsetting as the finger passes through (i.e., a binary selection, ratherthan a setting between 0 and 127).

In some cases, an adjustable parameter may be set based on the lasttouch location in a cell. For example, referring to FIG. 3A, as a userswipes their finger across the cells of array 320(D), finger 380 entersa cell from the left and sets the corresponding adjustable parameter. Asthe finger continues to move across the cell, its vertical locationwithin the cell may change, which can thereby change the adjustableparameter—typically in real-time. Thus, the adjustable parameter maycontinue to be adjusted as the finger changes its position within aparticular cell leaving the final position at the last location that theuser touched (e.g., if swiping left to right, the last location touchedon the right side of the cell).

In certain embodiments, step sequencer 300 may detect a duration of astationary touch within a particular cell and perform certain actionsbased on the detected duration. For example, in response to a usertouching a portion of a cell and releasing before a threshold time(e.g., 0.5 s, 1 s, etc.), then the corresponding adjustable parameter(e.g., velocity, probability, etc.) can be set to a level correspondingto the last location of the finger within the cell prior to release.This is shown, for example, in FIG. 3A as the user's finger 380traverses through each cell left-to-right along the path shown, thecorresponding level of each adjustable parameter is set approximatelyequal to the last location of the user's finger before leaving theparticular cell. Note that the movement is continuous and notstationary, so there may be series of touch detections within aparticular cell that effectively read at <0.1 s or less.

In some embodiments, in response to a user touching a portion of a celland releasing at or greater than a threshold time (e.g., 0.5 s, 1 s,etc.), then the corresponding array of cells may be expanded in size andremain in the expanded state as the user adjusts the adjustableparameter. Referring to FIG. 3B, a user presses and holds cell C1 atlocation 390, causing array 320(C) to expand in size. This can beadvantageous as it allows a user to set a particular adjustableparameter within a cell with more precision. In some embodiments, thenumber of possible levels (e.g., 0-127) within a particular cell may notchange when in a normal size (e.g., see FIG. 3A) or an expanded size(e.g., see FIG. 3B), however it may be easier for a user to articulate amore precise setting in an expanded cell as there is more area to movethe user's finger. In some embodiments, the user first selects and holdsa position for the threshold time to cause the cell to expand.Alternatively, some embodiments may expand a cell (and correspondingarray) based on an amount of time contacting the particular cell. Forinstance, a cell may expand in response to a user moving butcontinuously maintaining contact with the particular cell for thethreshold time. Any suitable implementation of the expansion of thecells may be employed as would be understood by one of ordinary skill inthe art with the benefit of this disclosure.

Once an array is expanded it may maintain its expanded state based on anumber of factors including maintained contact with the array (includingmovement between cells), a threshold time, or a combination thereof.Referring to FIG. 3B, a user touches (e.g., with a finger, stylus, orinput-device-controlled cursor, etc.) cell C1 at 390 and remainsstationary for a threshold time (e.g., 1 s). Array 320(C) expands andthe user then traverses his finger across the cells of array 320, whichsets the corresponding adjustable parameter of each cell to the lastlocation touched by the user, as described above. That is, a user firstperforms a “touch-and-hold” input for a threshold time at a location forthe expansion to occur, and then the user may proceed with moving withinthe cell or on to other cells within the array for adjusting theadjustable parameter. Referring back to FIG. 3B, after the expansion ofarray 320(C), finger traverses along the path shown thereby setting theadjustable parameter for each cell within the array as described above.For example, C1 is set to about 50%, C3 is set to about 90%, C7 is setto about 8%, C10 is set to about 95%, and C15 is set to about 45%.

In some cases, a user may enter a particular cell in an array that isalready expanded. In such cases, a “touch-and-hold” condition may not benecessary. Referring to FIG. 3B, after array 320(C) is expanded, it canremain expanded as finger 380 traverses across each adjacent cell. Thus,cells C2-C16 may not require a “touch-and-hold” input to cause array320(C) to maintain the expanded condition. In the embodiments shown, ahigher input location within a cell corresponds to a velocity for thatcell. Alternatively, a higher input location within a cell may beinversely related to the velocity of the audio sample playback for thatcell, such that higher placed inputs in a cell may correspond to a lowervelocity as compared to lower placed inputs in the cell. In someembodiments, additional touches during the expansion operation issupported. For instance, finger 380 may expand an array (row), butanother finger can also adjust parameters of the expanded array formulti-touch capabilities. One of ordinary skill in the art wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

FIG. 4 shows a user setting a number of notes within a plurality ofcells of a cell matrix, according to certain embodiments. For purposesof simplification, step sequencer 400 is shown to be similar to stepsequencer 200, however it should be understood that other configurationsas possible (e.g., different number of arrays, cells per array,adjustable parameters, etc.). Referring to FIG. 4, the adjustableparameter is set to note repeat 450(3), which sets a correspondingnumber of notes (e.g., note repetitions) within a particular cell thatcan play in response to a single trigger. For example, if the adjustableparameter is set to two notes, then two notes (e.g., two instantiations)of the audio sample 430(C) will play in response to a single trigger.

Step sequencer 400 shows a user's finger 480 moving along array 420(C)in a continuous path across each of the cells on a touch-sensitiveinterface. Array 420(C) can include cells C1-C16, however more cells orfewer cells are possible. Audio sample 430(C) (e.g., a closed hi-hatsound) is assigned to each cell of array 420(C). Note repeat 450(3) isselected as the adjustable parameter and the user's finger sets thenumber of notes of each cell as it passes through. For example, finger480 touches cell C1 and sets the number of notes based on the user input(e.g., location of finger 480), which sets 2 notes for cell C1. That is,as the cells of array 420(C) are played, C1 is played two times inresponse to a single trigger. As finger 380 continues along array420(C), the adjustable parameter for each cell is set based on thelocation of the finger with respect to the cell. For example, C3 is setto 4 notes, C7 is set to one note, C10 is set to 4 notes, and C16 is setto 3 notes. In the embodiments shown, a higher input location within acell corresponds to a higher number of notes for that cell.Alternatively, a higher input location within a cell may be inverselyrelated to the number of notes within that cell, such that higher placedinputs in a cell may correspond to a fewer number of notes as comparedto lower placed inputs in the cell. One of ordinary skill in the artwould understand the many variations, modifications, and alternativeembodiments thereof.

FIG. 5 shows a user setting a probability of a note trigger for aplurality of cells within a cell matrix, according to certainembodiments. For purposes of simplification, step sequencer 500 is shownto be similar to step sequencer 200, however it should be understoodthat other configurations as possible (e.g., different number of arrays,cells per array, adjustable parameters, etc.). Referring to FIG. 5, theadjustable parameter is set to probability 550(4), which sets acorresponding probability that a selected note (e.g., set via stepon/off) will be triggered in response to a single trigger for that cell.For example, if the adjustable parameter is set to 50%, then there is a50% chance that the selected cell will play the audio sample in responseto the cell being set to playback.

Step sequencer 500 shows a user's finger 580 moving along array 520(C)in a continuous path across each of the cells on a touch-sensitiveinterface. Array 520(C) can include cells C1-C16, however more cells orfewer cells are possible. Audio sample 530(C) (e.g., a closed hi-hatsound) is assigned to each cell of array 520(C). Probability 550(4) isselected as the adjustable parameter and the user's finger sets thenumber of notes of each cell as it passes through. For example, finger580 touches cell C1 and sets the number of notes based on the user input(e.g., location of finger 580), which sets a probability of 63% ofplayback for cell C1. That is, as the cells of array 520(C) are played,C1 is likely to be played 63% of the time in response to a singletrigger. As finger 580 continues along array 520(C), the adjustableparameter for each cell is set based on the location of the finger withrespect to the cell. For example, 53 is set to about 95%, C7 is set to22%, C10 is set to 95%, and C16 is set to 52%. In the embodiments shown,a higher input location within a cell corresponds to a higherprobability for that cell. Alternatively, a higher input location withina cell may be inversely related to the probability for audio sampleplayback for that cell, such that higher placed inputs in a cell maycorrespond to a lower probability as compared to lower placed inputs inthe cell. One of ordinary skill in the art would understand the manyvariations, modifications, and alternative embodiments thereof.

FIG. 6A shows a portion of a cell matrix with dynamic navigationobjects, according to certain embodiments. For purposes ofsimplification, step sequencer 600 is shown to be similar in certainaspects to step sequencer 200, however it should be understood thatother configurations as possible. Step sequencer 600 includes cellmatrix 610 and a number of cells selected for playback including visiblecells A1, A10, A16, B10, B15, C2, C9-C10, C14, D4, D8, D13, E4, E7, E12,F6, F11, G5, G11, and H11, and non-visible cells (e.g., cells thatextend beyond the display including cells in columns 17-32 as describedbelow) including cells A4, B1, C5-C6, D6, D9, E1, E10, E11, F2, F4, F12,G3, G4, G13-G16, and H14-H16, as shown in FIG. 6B. Step sequencer 600further includes a first dynamic navigation object 620(A) and a seconddynamic navigation object 620(B). Playback head (“play head”) 630(1)plays the cells in a sequential order, as described above, typicallyleft to right such that all selected column 1 cells are played first,column 2 cells are played next, and so on to the 16 column (or lastcolumn in the pattern). Referring to FIG. 6A, playback head 630(1) iscurrently playing all audio samples associated with the selected column4 cells (e.g., cells D4 and E4).

A dynamic navigation object is a selectable object that shows aminiaturized representation of a portion of cell matrix 610. Dynamicnavigation objects may be useful when the length of a particular rhythmpattern extends beyond the visible UI and, when selected, may switchbetween different portions of a pattern that extends beyond the UI.Referring to FIG. 6A, cell matrix 610 is an 8×16 array with 8 rows and16 columns of selectable cells. The entire rhythm pattern is an 8×32array with 8 rows and 32 columns of selectable cells. In FIG. 6A, onlycolumns 1-16 are visible in cell matrix 610. Dynamic navigation object620(A) shows a miniaturized representation of an 8×16 matrix of cells,showing a relative location of all the selected cells in the first 16columns (e.g., all cells selected using step on/off 650(1)) as well asplayback timing information as playback head 622 tracks the playbackhead 630(1) of cell matrix 610. Dynamic navigation object 620(B) shows aminiaturized representation of an 8×16 matrix of cells showing arelative location of all the selected cells in the second set of 16columns (e.g., all cells selected using step on/off 650(1) in columns17-32) as well as playback timing information as playback head 622 alsotracks within dynamic navigation object 620(B) when the playback head630(1) of cell matrix 610 is playing cells in columns 17-32. Referringto FIG. 6B, playback head 622 is playing the fourth column of cells inthe first portion of cells, as reflected in first dynamic navigationobject 620(A). The miniaturized representation may be updated inreal-time. For example, selecting or de-selecting certain cells (e.g.,turning them on/off) can be simultaneously reflected in the miniaturizedrepresentation.

As indicated above, step sequencer 600 may be configured to display thefirst portion of the cell matrix (e.g., the cells of columns 1-16) inresponse to the first miniaturized representation being selected, andswitch to display the second portion of the matrix (e.g., the cells ofcolumns 17-32) in response to the second miniaturized representationbeing selected. Thus, when the second cells of columns 17-32 aredisplayed, and a user selects the first miniaturized representation(dynamic navigation object 620(A)), cell matrix 610 switches from thesecond cells of columns to display the first cells of columns 1-16. Moreor fewer dynamic navigation objects may be used, and each dynamicnavigation object may correspond to any suitable number of cells withincell matrix 610. In some cases, dynamic navigation objects may show arepresentation of the cells, but may not show a real-time playbackelement (e.g., like playback head 622). In other implementations, areal-time playback element may be included, but the cell representationmay not necessarily reflect the actual configuration of selected cellsin the corresponding portion of cells.

FIG. 7A shows a finger 780 setting a start and end point within an arrayof cells within a cell matrix 700, according to certain embodiments.When adjustable parameter loop start/end 750(5) is selected, a user canchange the size of an array within a cell matrix. For example, a usercan shorten a length of an array of cells within a cell matrix byremoving cells from the front end of the array. Similarly, a user canshorten or lengthen a span of an array be shortening or lengthening theback end of the array. In some embodiments, when loop start/end 705(5)is selected, handles may appear on the front/back end of each arrayindicating that the arrays are configurable for editing. Referring toFIG. 7A, finger 780 engages handle 740(A) at the front end of array730(C) and moves it to the beginning of cell C3, which effectivelydeletes cells C1 and C2 from the front end of array 730(C). Similarly,finger 780 engages handle 740(B) at the back end of array 730(C) andmoves it to the end of cell C12, which can effectively delete cellsC13-C16 from the back end of array 730(C). Alternatively, finger 780could have moved handle 740(B) to the right, thereby adding additionalcells to array 730(C). In some cases, this may cause the number of cellsto extend beyond the visible area of the cell matrix, thereby creatingcells that extend into columns 17 and on. In such cases, dynamicnavigation objects can be used to switch between each visible portion ofcells within the pattern.

Playback for the arrays of cells within a cell matrix can besynchronous, asynchronous, or a combination thereof. In synchronousplayback, one column of cells may be played at a time. For example,referring to FIG. 7A, consider that every cell of B1-B16 and C3-C12 areselected for playback. In that case, step sequencer 700 may playbackcells B1 and B2 in order, while each cell in array 730(C) remainsunplayed (note that cells C1 and C2 have been deleted). When the playhead reaches column 3, then both of cells B3 and C3 are triggered toplayback their corresponding audio sample. Cells B4/C4 through B12/C12continue to play in a sequential and simultaneous fashion, as describedabove. At column 13, B13 plays and nothing is played in array 730(C)until the playback head restarts and once again reaches column 3 forsynchronized playback of B3 and C3.

In asynchronous playback, each array continuously plays, which mayresult in different column of cells being played at the same time. Forexample, referring to FIG. 7A, consider again that every cell of B1-B16and C3-C12 are selected for playback. In that case, initiating playbackmay cause the first cell of each array to play at the same time. Thus,B1 and C3 (the first cell in array 730(C)) may simultaneously triggertheir corresponding audio sample to play back. Next, B2 and C4 can beplayed simultaneously and the sequence may continue in kind through B10and C12, followed by array 730(C) looping back to its beginning suchthat playback continues with B11/C3, B12/C4, B13/C5, B14/C6, B15/C7,B16/C8, B1/C9, B2/C10, and so on. In some embodiments, certain rows maybe individually selected for synchronous or asynchronous playback. Forexample, array 730(C) may be configured for asynchronous playback, whileother arrays may be configured for synchronous playback. Synchronous andasynchronous playback are further illustrated in FIGS. 7B-7C. In someembodiments, the loop start/end points can be moved during playback,thus creating a moving “window” or moving “loop” within the total arrayof cells.

Many of the embodiments described herein refer to a “removal” of cellswithin an array. Alternatively or additionally, some embodiments may notactually “remove” the cells from an array, but rather limit playback toa certain range of cells within that array. Referring to FIG. 7A,instead of removing cells C1-C2 and C13-C16, playback is merely limitedto cells C3-C12. This alternative treatment may be applied to any of theembodiments contemplated within the present disclosure.

FIG. 7B shows a synchronous playback of cells within a cell matrix,according to certain embodiments. For the purposes of illustration,assume that each cell in the cell matrix is selected for playback. Atpoint A, cells A1 and B1 are played simultaneously, while C1 is silentas it has been deleted. Playback continues sequentially (e.g., column 1,2, 3 . . . ) until point B, where cells A4, B4, and C4 are playedsimultaneously. At point C, cells A13 and B13 are played simultaneously,while cells in array 730(C) are unplayed as the play head is positionedover deleted cell C13. Thus, the play head sequentially progressesthrough cells 1-16 and returns to the beginning (cell 1) to continue theplayback cycle (assuming that the pattern is 16 cells in length). Onecolumn at a time in continuous succession with no skips or jumps inbetween such that arrays (rows) that do not have cells in a particularcolumn are silent (not triggered) until a selected cell is accessed(e.g., see FIG. 7B—cells C1-C2 and C13-C16).

FIG. 7C shows an asynchronous playback of cells within a cell matrix,according to certain embodiments. Again, for the purposes ofillustration, assume that each cell in the cell matrix is selected forplayback. With asynchronous playback, the play head plays continuouslyfor all arrays in the cell matrix. In some patterns, arrays may start atdifferent positions (e.g., array 730(C) starts with cell C3, while thefirst two rows start with cells A1 and B2 respectively). In such cases,playback will begin with the first cell in each array and continue on,looping back to the beginning once the last cell in the array is played.For example, at point A of FIG. 7B, cells A1, B1, and C3 are playedsimultaneously, as these cells represent the first cell within theircorresponding array. At point B, cells A4, B4, and C6 are playedsimultaneously. By the time the play head plays cells A10, B10, and C12,array 730(C) has reached its end and the play head for that particulararray loops back to its beginning. Thus, at point C, cells A13, B13, andC5 are played simultaneously. Although FIGS. 7B-7C provide a particulararrangement of cells and arrays, it should be understood that many otherarrangements are possible, including arrays that extend beyond thevisible matrix (e.g., extending to 17 or more cells), alternativeplayback schemes (e.g., ping pong playback, reverse playback, randomizedplayback, etc.), and more. One of ordinary skill in the art with thebenefit of this disclosure would understand the many variations,modifications, and alternative embodiments thereof.

FIG. 8 is a simplified flow diagram illustrating aspects of a method 800of setting an adjustable parameter in a step sequencer, according tocertain embodiments. Method 800 illustrates how a step sequencer candetermine whether to expand an array to receive a user input, asdescribed above with respect to FIGS. 3A-3B. Method 800 can be performedby processing logic that may comprise hardware (e.g., circuitry,dedicate logic, etc.), software (which as is run on a general purposecomputing system or a dedicated machine), firmware (embedded software),or any combination thereof. In some embodiments, method 800 can beperformed by aspects of system 1100 of FIG. 11, including processor(s)1105.

At 810, method 800 begins with receiving an input corresponding to aselection of a cell within a particular array of cells of a cell matrix,according to certain embodiments. The cell matrix can include one ormore arrays of cells. In some cases, each cell within the cell matrixcan be arranged in a sequential arrangement within its correspondingarray of cells. Each array of the cell matrix may be assigned to audiosample data stored in a computer-readable medium that, when triggered,causes the audio sample data to output corresponding audio.Alternatively or additionally, each array of the cell matrix may beassigned to MIDI notes, which are associated with audio sample data tooutput corresponding audio. In some implementations, each cell withinits particular array of the cell matrix, in response to being selectedfor playback and upon being triggered to begin playback, can cause theaudio sample data corresponding to the cell's particular array to beplayed.

At 820, method 800 can continue with determining a duration of thereceived input. The input can be a touch on a touch-sensitive displayprovided by a user's finger, a stylus, or the like. In some cases, thereceived input may correspond to a cursor-based selection from an inputdevice. For example, a user may manipulate a computer mouse or presenterdevice to control a movement of a cursor on a display. A user may pressa button on the input device while the cursor is placed over a cell onthe cell matrix to provide the input corresponding to a selection of thecell.

At 830, method 800 can include determining whether the duration of thereceived input is greater than or equal to a threshold time. Thethreshold time may be any suitable time, such as 0.5 s, 1 s, or anylength of time. In some embodiments, the determination may be based onwhether the duration is greater than the threshold time (not equal to).

At 840, in response to determining that the input's duration is below athreshold time, method 800 can include adjusting an adjustable parameterof the selected cell based on the input, the adjustable parameterconfigured to change an audio characteristic of the selected cell'scorresponding audio sample data. The audio characteristic may correspondto at least one of a velocity, a volume, a probability of triggering, ora number of notes within the corresponding cell.

At 850, in response to determining that the input's duration is at orabove a threshold time, method 800 can include expanding a size of anarray containing the selected cell and adjusting the adjustableparameter of the selected cell based on the input. In some cases, thearray may already be expanded. In such cases, in response to determiningthat the input's duration is below a threshold time and thecorresponding array containing the selected cell is already expanded,method 800 can include adjusting the adjustable parameter of theselected cell based on the input and not changing the size of thecorresponding array.

It should be appreciated that the specific steps illustrated in FIG. 8provides a particular method of setting an adjustable parameter in astep sequencer, according to an embodiment of the present invention.Other sequences of steps may also be performed according to alternativeembodiments. In certain embodiments, method 800 may perform theindividual steps in a different order, at the same time, or any othersequence for a particular application. Moreover, the individual stepsillustrated in FIG. 8 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.Furthermore, additional steps may be added or removed depending on theparticular applications. One of ordinary skill in the art wouldrecognize and appreciate many variations, modifications, andalternatives of the method.

FIG. 9 is a simplified flow diagram illustrating aspects of a method 900of controlling a virtual instrument implemented on a display, accordingto certain embodiments. Method 900 illustrates how a number of cells ina array can be changed, and how the step sequencer may operate playbackwith arrays having differing lengths, as further discussed above withrespect to FIGS. 7A-7C. Method 900 can be performed by processing logicthat may comprise hardware (e.g., circuitry, dedicate logic, etc.),software (which as is run on a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In one embodiment, method 900 is performed by aspects of system1100 of FIG. 11, including processor(s) 1105

At 910, method 900 begins with receiving a first input corresponding toa selection of an array of cells within a cell matrix, according tocertain embodiments. The cell matrix may include one or more arrays ofcells, with each cell within the cell matrix arranged in a sequentialarrangement within its corresponding array of cells. Each array of thecell matrix may be assigned to audio sample data stored in acomputer-readable medium that, when triggered, causes the audio sampledata to output corresponding audio. In some cases, each cell within itsparticular array of the cell matrix, in response to being selected forplayback and upon being triggered to begin playback, may cause the audiosample data corresponding to the cell's particular array to be played.The input can be a touch on a touch-sensitive display provided by auser's finger, a stylus, or the like. In some cases, the received inputmay correspond to a cursor-based selection from an input device. Forexample, a user may manipulate a computer mouse or presenter device tocontrol a movement of a cursor on a display. A user may press a buttonon the input device while the cursor is placed over a cell on the cellmatrix to provide the input corresponding to a selection of the cell.

At 920, method 900 can continue with receiving a second inputcorresponding to a changing of a number of cells within the particularselected array. This may include removing cells from the beginning orthe end of an array, as shown in FIG. 7A. In some cases, the array maybe extended and additional cells can be added. For example, a 16-cellarray may be extended to a 32 cell array. Arrays can be adjusted toinclude any suitable number of cells.

At 930, method 900 continues with changing the number of cells withinthe selected array based on the second input. That is, the number ofcells are changed in response to the user's second input thatcorresponded to a changing of the size of the array.

At 940, method 900 can include triggering a playing back of the audiosample corresponding to each selected cell based on each selected cell'ssequential order with respect to the other cells and the number of cellswith each selected cell's corresponding row. Step 940 may correspond toasynchronous playback, as described above with respect to FIG. 7C. Thatis, each cell of an array can be played consecutively in sequentialorder (e.g., a first cell in an array is played first, followed by thesecond cell in the array). The playback may further be based on thenumber of cells in the array. Referring to FIG. 7C, some of the cellsare removed from array 730(C). Instead of waiting until the play headreaches a playable cell in the array, playback continuously loopsthrough the playable cells independent of what is happening in the othercells. In other words, an array with 10 cells will loop playback throughthe 10 cells, even though other arrays with different numbers of cellsare being played asynchronously (i.e., multiple columns of cells may beplayed simultaneously). In some embodiments, playback may besynchronous, as shown in FIG. 7B, where only one column of cells isplayed at a time. One of ordinary skill in the art would understand themany variations, modifications, and alternative embodiments thereof.

It should be appreciated that the specific steps illustrated in FIG. 9provides a particular method of controlling a virtual instrumentimplemented on a display, and more particular, how a number of cells ina array can be changed, according to certain embodiments. Othersequences of steps may also be performed according to alternativeembodiments. In certain embodiments, method 900 may perform theindividual steps in a different order, at the same time, or any othersequence for a particular application. Moreover, the individual stepsillustrated in FIG. 9 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.Furthermore, additional steps may be added or removed depending on theparticular applications. One of ordinary skill in the art wouldrecognize and appreciate many variations, modifications, andalternatives of the method.

FIG. 10 is a simplified flow diagram illustrating aspects of a method1000 of adjusting a parameter in a virtual instrument (e.g., stepsequencer), according to certain embodiments. Method 1000 can beperformed by processing logic that may comprise hardware (e.g.,circuitry, dedicate logic, etc.), software (which as is run on a generalpurpose computing system or a dedicated machine), firmware (embeddedsoftware), or any combination thereof. In some embodiments, method 1000can be performed by aspects of system 1400 of FIG. 14, includingprocessor(s) 1405.

At block 1010, method 1000 can include receiving an input correspondingto a selection of a cell within a particular array of cells of a cellmatrix, according to certain embodiments. The cell matrix can includeone or more arrays of cells. Each cell within the cell matrix may bearranged in a sequential arrangement within its corresponding array ofcells, and each array of the cell matrix may be assigned to audio sampledata stored in a computer-readable medium that, in response to beingtriggered, causes the audio sample data to output corresponding audio.In some cases, each cell within its particular array of the cell matrix,in response to being selected for playback and upon being triggered tobegin playback, may cause the audio sample data corresponding to thecell's particular array to be played.

At block 1020, method 1000 can include determining a duration of thereceived input, according to certain embodiments. In response todetermining that the input's duration is below a threshold time (block1030), method 1000 can include adjusting an adjustable parameter of theselected cell based on the input, where the adjustable parameter may beconfigured to change an audio characteristic of the selected cell'scorresponding audio sample data (block 1040). In response to determiningthat the input's duration is at or above a threshold time (block 1030),method 1000 can include expanding a size of an array containing theselected cell and adjusting the adjustable parameter of the selectedcell based on the input (block 1050). In some cases, the input can be adetected touch on the display or an input by a control device (e.g.,cursor controlled by a computer mouse). The audio characteristic maycorrespond to at least one of a velocity, a volume, a probability oftriggering, or a number of notes within the corresponding cell. Othercharacteristics may be implemented including stereo panning, filters,audio effects (e.g., an amount of compression, distortion, delay, etc.),or the like. One of ordinary skill in the art with the benefit of thisdisclosure would understand the many variations, modifications, andalternative embodiments thereof.

At block 1060, method 1000 can include increasing a number of selectablelevels for the adjustable parameter. Examples of expanding a size of anarray (e.g., row of cells) in response to a press-and-hold beyond athreshold time are shown and described above with at least with respectto FIGS. 3B-5. In some cases, in response to determining that theinput's duration is below a threshold time and the corresponding arraycontaining the selected cell is already expanded, method 1000 caninclude adjusting the adjustable parameter of the selected cell based onthe input. In situations where the array is expanded in size, a highernumber of selectable levels for the adjustable parameter may beavailable, as compared to when the array is not expanded in size.

It should be appreciated that the specific steps illustrated in FIG. 10provides a particular method of controlling a virtual instrumentimplemented on a display, and more particular, how a number of cells ina array can be changed, according to certain embodiments. Othersequences of steps may also be performed according to alternativeembodiments. In certain embodiments, method 900 may perform theindividual steps in a different order, at the same time, or any othersequence for a particular application. Although a particular thresholdis described, it would be understood by one of ordinary skill in the artwith the benefit of this disclosure that threshold bands instead ofsingular values can be used, durations above but not necessarily at thethreshold may trigger the expansion of the array, or other thresholdconfiguration. The individual steps illustrated in FIG. 10 may includemultiple sub-steps that may be performed in various sequences asappropriate to the individual step. Furthermore, additional steps may beadded or removed depending on the particular applications. One ofordinary skill in the art would recognize and appreciate manyvariations, modifications, and alternatives of the method.

FIG. 11 is a simplified flow diagram illustrating aspects of a method1100 of switching between groups of cells in a cell matrix, according tocertain embodiments. Method 1000 can be performed by processing logicthat may comprise hardware (e.g., circuitry, dedicate logic, etc.),software (which as is run on a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In some embodiments, method 1000 can be performed by aspects ofsystem 1400 of FIG. 14, including processor(s) 1405.

At block 1110, method 1100 can include receiving an input correspondingto a selection of a dynamic navigation object of a plurality of dynamicnavigation objects configured on the display. The display may include acell matrix displayed in a predefined area. The cell matrix can includeone or more arrays of cells, where each cell within the cell matrix canbe arranged in a sequential arrangement within its corresponding arrayof cells. In some embodiments, each array (or subset of the total numberof arrays) of the cell matrix can be assigned to audio sample datastored in a computer-readable medium that, in response to beingtriggered, causes the audio sample data to output corresponding audio.In some cases, each cell within its particular array of the cell matrix,in response to being selected for playback and upon being triggered tobegin playback, may cause the audio sample data corresponding to thecell's particular array to be played. The predefined area can be adesignated region on the display to render the cell matrix. Forinstance, the area occupied by cell matrix 610 of FIG. 6A may be thepredefined area. The cell matrix may extend beyond what is rendered inthe predefined area. For example, 16 columns are shown, but a singlesequenced pattern (e.g., rhythmic pattern) may extend beyond 16 columns,as described above with respect to FIGS. 6A-6B.

In some embodiments, the plurality of dynamic navigation objects mayinclude a first miniaturized representation of a first portion of thematrix of user-selectable cells and a second miniaturized representationof a second portion of the matrix of user selectable cells. The firstportion of the cell matrix may correspond to a first number of columnsof user-selectable cells, and the second portion of the cell matrix maycorrespond to a second number of columns of user-selectable cells, thesecond number of columns of user-selectable cells being differentuser-selectable cells than the first number of columns ofuser-selectable cells. Each of the dynamic navigation objects maydepicts all of the user-selectable cells (or a portion thereof) of itscorresponding portion of the cell matrix and highlights selecteduser-selectable cells of its corresponding portion of the cell matrix.In some embodiments, each dynamic navigation object may include anindicator that indicates which column of cells of its correspondingportion of the matrix are being played.

At block 1130, in response to the first dynamic navigation object beingselected, method 1100 can include displaying the first portion of thecell matrix in response to the first miniaturized representation beingselected, such that the first portion of the cell matrix is visible inthe predefined area and the second portion of the cell matrix is notvisible in the predefined area.

At block 1140, in response to the first dynamic navigation object beingselected, method 1100 can include displaying the second portion of thecell matrix in response to the second miniaturized representation beingselected, such that the second portion of the cell matrix is visible inthe predefined area and the first portion of the cell matrix is notvisible in the predefined area.

It should be appreciated that the specific steps illustrated in FIG. 11provides a particular method of switching between groups of cells in acell matrix, according to certain embodiments. Other sequences of stepsmay also be performed according to alternative embodiments. In certainembodiments, method 900 may perform the individual steps in a differentorder, at the same time, or any other sequence for a particularapplication. Moreover, the individual steps illustrated in FIG. 9 mayinclude multiple sub-steps that may be performed in various sequences asappropriate to the individual step. Furthermore, additional steps may beadded or removed depending on the particular applications. One ofordinary skill in the art would recognize and appreciate manyvariations, modifications, and alternatives of the method.

FIG. 12 is a simplified flow diagram illustrating aspects of a method1200 of modifying a playback of a virtual instrument implemented on adisplay, according to certain embodiments. Method 1200 illustrates how anumber of cells in a array can be changed, and how the step sequencermay operate playback with arrays having differing lengths, as furtherdiscussed above with respect to FIGS. 7A-7C. Method 1200 can beperformed by processing logic that may comprise hardware (e.g.,circuitry, dedicate logic, etc.), software (which as is run on a generalpurpose computing system or a dedicated machine), firmware (embeddedsoftware), or any combination thereof. In some embodiments, method 1200can be performed by aspects of system 1400 of FIG. 14, includingprocessor(s) 1405

At block 1210, method 1200 can include receiving a first inputcorresponding to a selection of an array of cells within a cell matrix.The cell matrix can include one or more arrays of cells (e.g., see FIG.2) with each cell within the cell matrix, or a portion thereof, arrangedin a sequential arrangement within its corresponding array of cells. Insome cases, each array of the cell matrix can be assigned to audiosample data stored in a computer-readable medium that, in response tobeing triggered, causes the audio sample data to output correspondingaudio. Each cell within its particular array of the cell matrix, inresponse to being selected for playback and upon being triggered tobegin playback, can cause the audio sample data corresponding to thecell's particular array to be played.

At block 1220, method 1200 can include receiving a second inputcorresponding to a changing of a number of cells within the particularselected array.

At block 1230, method 1200 can include changing the number of cellswithin the selected array based on the second input and maintaining anumber of cells in other arrays within the cell matrix. In some cases,the second input can cause a playback start point of the selected arrayto move from a first location at a first cell of the selected array to asecond location at a second cell of the selected array. The second inputmay include a touch input corresponding to a detected touch moving fromthe first location to the second location, as shown in FIG. 7A, or aninput by a control device (e.g., cursor controlled by a computer mouse).One of ordinary skill in the art with the benefit of this disclosurewould understand the many variations, modifications, and alternativeembodiments thereof.

Triggering playback of audio samples for each row of selected cells canbe performed in a number of different ways. For instance, at block 1240,method 1200 can include triggering a playback of the audio samplecorresponding to each selected cell within the matrix based on eachselected cell's sequential order within its array and the selectedcell's sequential order with respect to other cells within the cellmatrix. In some embodiments, playback of each array of cells within thecell matrix begins simultaneously with a first cell at a beginning ofeach array of cells, as further discussed above. Alternatively oradditionally, triggering a playback of the audio sample corresponding toeach selected cell can be based on the number of cells within eachselected cell's corresponding row (block 1250), or triggering a playbackof the audio sample corresponding to each selected cell may be based ona column of the selected cell within the cell matrix (block 1260). Insome embodiments, the second input can correspond to a removing of oneor more cells from a beginning or an end of the selected array. In somecases, the second input can correspond to a change in a playback timingof a beginning or an end of the selected array.

It should be appreciated that the specific steps illustrated in FIG. 12provides a particular method of modifying a playback of a virtualinstrument implemented on a display, and more particularly, how a numberof cells in a array can be changed, according to certain embodiments.Other sequences of steps may also be performed according to alternativeembodiments. In certain embodiments, method 1200 may perform theindividual steps in a different order, at the same time, or any othersequence for a particular application. Moreover, the individual stepsillustrated in FIG. 12 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.Furthermore, additional steps may be added or removed depending on theparticular applications. One of ordinary skill in the art wouldrecognize and appreciate many variations, modifications, andalternatives of the method.

System Architecture

FIG. 13 illustrates an example of a system 1300 that can enable a userto operate a step sequencer, according to certain embodiments. System1300 can be a device that can include multiple subsystems such as adisplay subsystem 1305, one or more processors and/or processing units1310, storage subsystem 1318, and communications system 1360. One ormore communication paths can be provided to enable one or more of thesubsystems to communicate with and exchange data with one another. Thevarious subsystems in FIG. 13 can be implemented in software, hardware,firmware, or combinations thereof. In some embodiments, the software canbe stored on a transitory or non-transitory computer readable storagemedium and can be executed by one or more processing units. In certainembodiments, storage subsystem 1318 comprises one or more memories forstoring the data used or generated by certain embodiments of the presentinvention and for storing software (e.g., code, computer instructions)that may be executed by one or more processing units 1310.

It should be appreciated that system 1300, as shown in FIG. 13, caninclude more or fewer components than those shown in FIG. 13, cancombine two or more components, or can have a different configuration orarrangement of components. In some embodiments, system 1300 can be apart of a portable computing device, such as a tablet computer, a mobiletelephone, a smart phone, a desktop computer, a laptop computer, akiosk, wearable device, etc. The system 1300 can operate on an iPhone®,iPad®, iMac®, iWatch®, AppleTV®, or the like, to provide some specificexamples.

In some embodiments, display subsystem 1305 can provide an interface(e.g., step sequencer) that allows a user to interact with system 1300.The display subsystem 1305 may be a cathode ray tube (CRT), a flat-paneldevice (e.g., a liquid crystal display (LCD) based device, LED-baseddevice, plasma-based device, etc.), a projection device, a touch screen,or the like. In general, use of the term “output device” is intended toinclude all possible types of devices and mechanisms for outputtinginformation from system 1300. For example, a software keyboard may bedisplayed using a flat-panel screen. In some embodiments, the displaysubsystem 1305 can be a touch interface, where the display provides bothan interface for outputting information to a user of the device and alsoas an interface for receiving inputs. In other embodiments, there may beseparate input and output subsystems. Through the display subsystem1305, the user can view and interact with a GUI (Graphical UserInterface) 1320 of a system 1300. In some embodiments, display subsystem1305 can include a touch-sensitive interface (also sometimes referred toas a touch screen) that can both display information to the user andreceive inputs from the user. Processing unit(s) 1310 can include one ormore processors, each having one or more cores. In some embodiments,processing unit(s) 1310 can execute instructions stored in storagesubsystem 1318. System 1300 can further include an audio system to playmusic (e.g., sequenced patterns—see FIG. 6A, musical performances, etc.)through one or more audio speakers (not shown).

A communications system (not shown) can include various hardware,firmware, and software components to enable electronic communicationbetween multiple computing devices via Wi-Fi, Bluetooth, infra-red,Z-Wave, ZigBee, or any other suitable communications protocol that canprovide sufficiently fast and reliable data rates to support theembodiments described herein.

Storage subsystem 1318 can include various memory units such as a systemmemory, a read-only memory (ROM), and non-volatile storage device(s).The system memory can be a read-and-write memory device or a volatileread-and-write memory, such as dynamic random access memory. Systemmemory can store some or all of the instructions and data that theprocessor(s) or processing unit(s) need at runtime. ROM can store staticdata and instructions that are used by processing unit(s) 1310 and othermodules of system 1300. Non-volatile storage device can be aread-and-write capable memory device. Embodiments of the invention canuse a mass-storage device (such as a magnetic or optical disk or flashmemory) as a permanent storage device. Other embodiments can use aremovable storage device (e.g., a floppy disk, a flash drive) as anon-volatile (e.g., permanent) storage device.

Storage subsystem 1315 can store MIDI (Musical Instrument DigitalInterface) data relating to notes played on a virtual instrument ofsystem 1300 in MIDI database 1330. A performance data database 1325 canstore performance data including velocity data, probability data, notecount data (number of notes in per cell), audio pan data, etc. The audiodatabase 1335 may store audio samples that may correspond (e.g., beassigned) to the arrays of a step sequencer. For example, in FIG. 13 atambourine sound is assigned to the first array (first row) of the cellmatrix. Further detail regarding system architecture and the auxiliarycomponents thereof (e.g., input/output controllers, memory controllers,etc.) are not discussed in detail so as not to obfuscate the focus onthe invention and would be understood by those of ordinary skill in theart.

FIG. 14 illustrates a computer system 1400 operable to run softwareconfigured to control a step sequencer, according to certainembodiments. The user interfaces described herein (e.g., FIGS. 1-7C) canbe implemented within a computer system such as computer system 1400shown here. Computer system 1400 can be implemented as any of variouscomputing devices, including, e.g., a desktop or laptop computer, tabletcomputer, smart phone, wearable device, head-mounted display (e.g.,AR/VR systems), personal data assistant (PDA), or any other type ofcomputing device and not limited to any particular form factor. Computersystem 1400 can include processing unit(s) 1405, storage subsystem 1410,input devices 1420, output devices 1425, network interface 1435, and bus1440. In some embodiments, system 1400 can be operated in within theframework of Garageband® or Logic®, developed by Apple Computer®.

Processing unit(s) 1405 can include a single processor, which can haveone or more cores, or multiple processors. In some embodiments,processing unit(s) 1405 can include a general purpose primary processoras well as one or more special purpose co-processors such as graphicsprocessors, digital signal processors, or the like. In some embodiments,some or all processing units 1405 can be implemented using customizedcircuits, such as application specific integrated circuits (ASICs) orfield programmable gate arrays (FPGAs). In some embodiments, suchintegrated circuits execute instructions that are stored on the circuititself. In other embodiments, processing unit(s) 1405 can executeinstructions stored in storage subsystem 1410.

Storage subsystem 1410 can include various memory units such as a systemmemory, a read-only memory (ROM), and a permanent storage device. TheROM can store static data and instructions that are needed by processingunit(s) 1405 and other modules of electronic device 1400. The permanentstorage device can be a read-and-write memory device. This permanentstorage device can be a non-volatile memory unit that storesinstructions and data even when computer system 1400 is powered down.Some embodiments of the invention can use a mass-storage device (such asa magnetic or optical disk or flash memory) as a permanent storagedevice. Other embodiments can use a removable storage device (e.g., afloppy disk, a flash drive) as a permanent storage device. The systemmemory can be a read-and-write memory device or a volatileread-and-write memory, such as dynamic random access memory. The systemmemory can store some or all of the instructions and data that theprocessor needs at runtime.

Storage subsystem 1410 can include any combination of computer readablestorage media including semiconductor memory chips of various types(DRAM, SRAM, SDRAM, flash memory, programmable read-only memory) and soon. Magnetic and/or optical disks can also be used. In some embodiments,storage subsystem 1410 can include removable storage media that can bereadable and/or writeable; examples of such media include compact disc(CD), read-only digital versatile disc (e.g., DVD-ROM, dual-layerDVD-ROM), read-only and recordable Blue-Ray® disks, ultra densityoptical disks, flash memory cards (e.g., SD cards, mini-SD cards,micro-SD cards, etc.), magnetic “floppy” disks, and so on. The computerreadable storage media do not include carrier waves and transitoryelectronic signals passing wirelessly or over wired connections.

In some embodiments, storage subsystem 1410 can store one or moresoftware programs to be executed by processing unit(s) 1405, such as auser interface 1415. As mentioned, “software” can refer to sequences ofinstructions that, when executed by processing unit(s) 1405 causecomputer system 1400 to perform various operations, thus defining one ormore specific machine implementations that execute and perform theoperations of the software programs. The instructions can be stored asfirmware residing in read-only memory and/or applications stored inmagnetic storage that can be read into memory for processing by aprocessor. Software can be implemented as a single program or acollection of separate programs or program modules that interact asdesired. Programs and/or data can be stored in non-volatile storage andcopied in whole or in part to volatile working memory during programexecution. From storage subsystem 1410, processing unit(s) 1405 canretrieve program instructions to execute and data to process in order toexecute various operations described herein.

A user interface can be provided by one or more user input devices 1420,display device 1425, and/or and one or more other user output devices(not shown). Input devices 1420 can include any device via which a usercan provide signals to computing system 1400; computing system 1400 caninterpret the signals as indicative of particular user requests orinformation. In various embodiments, input devices 1420 can include anyor all of a keyboard touch pad, touch screen, mouse or other pointingdevice, scroll wheel, click wheel, dial, button, switch, keypad,microphone, and so on.

Output devices 1425 can display images generated by electronic device1400. Output devices 1425 can include various image generationtechnologies, e.g., a cathode ray tube (CRT), liquid crystal display(LCD), light-emitting diode (LED) including organic light-emittingdiodes (OLED), projection system, or the like, together with supportingelectronics (e.g., digital-to-analog or analog-to-digital converters,signal processors, or the like), indicator lights, speakers, tactile“display” devices, headphone jacks, printers, and so on. Someembodiments can include a device such as a touchscreen that function asboth input and output device.

In some embodiments, output device 1425 can provide a graphical userinterface, in which visible image elements in certain areas of outputdevice 1425 are defined as active elements or control elements that theuser selects using user input devices 1420. For example, the user canmanipulate a user input device to position an on-screen cursor orpointer over the control element, then click a button to indicate theselection. Alternatively, the user can touch the control element (e.g.,with a finger or stylus) on a touchscreen device. In some embodiments,the user can speak one or more words associated with the control element(the word can be, e.g., a label on the element or a function associatedwith the element). In some embodiments, user gestures on atouch-sensitive device can be recognized and interpreted as inputcommands; these gestures can be but need not be associated with anyparticular array in output device 1425. Other user interfaces can alsobe implemented.

Network interface 1435 can provide voice and/or data communicationcapability for electronic device 1400. In some embodiments, networkinterface 1435 can include radio frequency (RF) transceiver componentsfor accessing wireless voice and/or data networks (e.g., using cellulartelephone technology, advanced data network technology such as 3G, 4G orEDGE, 5G, WiFi (IEEE 802.11 family standards, or other mobilecommunication technologies, or any combination thereof), GPS receivercomponents, and/or other components. In some embodiments, networkinterface 1435 can provide wired network connectivity (e.g., Ethernet)in addition to or instead of a wireless interface. Network interface1435 can be implemented using a combination of hardware (e.g., antennas,modulators/demodulators, encoders/decoders, and other analog and/ordigital signal processing circuits) and software components.

Bus 1440 can include various system, peripheral, and chipset buses thatcommunicatively connect the numerous internal devices of electronicdevice 1400. For example, bus 1440 can communicatively couple processingunit(s) 1405 with storage subsystem 1410. Bus 1440 also connects toinput devices 1420 and display 1425. Bus 1440 also couples electronicdevice 1400 to a network through network interface 1435. In this manner,electronic device 1400 can be a part of a network of multiple computersystems (e.g., a local area network (LAN), a wide area network (WAN), anIntranet, or a network of networks, such as the Internet. Any or allcomponents of electronic device 1400 can be used in conjunction with theinvention.

Some embodiments include electronic components, such as microprocessors,storage and memory that store computer program instructions in acomputer readable storage medium. Many of the features described in thisspecification can be implemented as processes that are specified as aset of program instructions encoded on a computer readable storagemedium. When these program instructions are executed by one or moreprocessing units, they cause the processing unit(s) to perform variousoperation indicated in the program instructions. Examples of programinstructions or computer code include machine code, such as is producedby a compiler, and files including higher-level code that are executedby a computer, an electronic component, or a microprocessor using aninterpreter.

It will be appreciated that computer system 1400 is illustrative andthat variations and modifications are possible. Computer system 1400 canhave other capabilities not specifically described here (e.g., mobilephone, global positioning system (GPS), power management, one or morecameras, various connection ports for connecting external devices oraccessories, etc.). Further, while computer system 1400 is describedwith reference to particular blocks, it is to be understood that theseblocks are defined for convenience of description and are not intendedto imply a particular physical arrangement of component parts. Further,the blocks need not correspond to physically distinct components. Blockscan be configured to perform various operations, e.g., by programming aprocessor or providing appropriate control circuitry, and various blocksmight or might not be reconfigurable depending on how the initialconfiguration is obtained. Embodiments of the present invention can berealized in a variety of apparatus including electronic devicesimplemented using any combination of circuitry and software.

While the invention has been described with respect to specificembodiments, one skilled in the art will recognize that numerousmodifications are possible including the displayed representation of thestep sequencers of FIGS. 2-7C and the configuration of the variouselements therein, such as their position, organization, and function,filtering rules and analysis, etc. Thus, although the invention has beendescribed with respect to specific embodiments, it will be appreciatedthat the invention is intended to cover all modifications andequivalents within the scope of the following claims.

FIG. 15 depicts a simplified diagram of a distributed system 1500 forproviding a system and method for operating a step sequencer, accordingto certain embodiments. In the embodiment depicted in FIG. 15, system1500 is provided on a server 1504 that is communicatively coupled with aremote client device 1502(1)-(4) via network 1506. Server 1504 mayinclude one or more web servers 1508, application servers 1510, or acombination thereof, or any suitable server based infrastructure.

Network 1506 may include one or more communication networks, which couldbe the Internet, a local area network (LAN), a wide area network (WAN),a wireless or wired network, an Intranet, a private network, a publicnetwork, a switched network, or any other suitable communicationnetwork. Network 1506 may include many interconnected systems andcommunication links including but not restricted to hardwire links,optical links, satellite or other wireless communications links, wavepropagation links, or any other ways for communication of information.Various communication protocols may be used to facilitate communicationof information via network 1506, including but not restricted to TCP/IP,HTTP protocols, extensible markup language (XML), wireless applicationprotocol (WAP), protocols under development by industry standardorganizations, vendor-specific protocols, customized protocols, andothers. In the configuration depicted in FIG. 15, aspects of system 1500may be displayed by client device 1502.

In the configuration depicted in FIG. 15, system 1500 is remotelylocated from client device(s) 1502(1)-(4). In some embodiments, server1504 may operate the step sequencer functions described herein. In someembodiments, the services provided by server 1204 may be offered asweb-based or cloud services or under a Software as a Service (SaaS)model.

It should be appreciated that various different distributed systemconfigurations are possible, which may be different from distributedsystem 1500 depicted in FIG. 15. The embodiment shown in FIG. 15 is thusonly one example of system for operating a step sequencer and is notintended to be limiting.

While the invention has been described with respect to specificembodiments, one skilled in the art will recognize that numerousmodifications are possible. Thus, although the invention has beendescribed with respect to specific embodiments, it will be appreciatedthat the invention is intended to cover all modifications andequivalents thereof.

Any element in a claim that does not explicitly state “means for”performing a specified function, or “step for” performing a specificfunction, is not to be interpreted as a “means” or “step” clause asspecified in 35 U.S.C. § 112, sixth paragraph. In particular, the use of“step of” in the claims herein is not intended to invoke the provisionsof 35 U.S.C. § 112, sixth paragraph.

What is claimed is:
 1. A method of operating a UI for controlling avirtual musical instrument implemented on a display, the methodcomprising: receiving a first input corresponding to a selection of anarray of uniformly-sized cells within a cell matrix, the cell matrixincluding two or more arrays of cells, wherein each cell of the cellmatrix is a trigger, wherein each cell is arranged in a sequentialarrangement within its corresponding array of cells, wherein each arrayof the cell matrix is assigned to audio sample data stored in acomputer-readable medium that, when triggered by one of the cells withinthe corresponding array, causes the audio sample data to outputcorresponding audio, and each cell within its particular array of thecell matrix, in response to being selected for playback and upon beingtriggered to begin playback, causes the audio sample data correspondingto the cell's particular array to be played, receiving a second inputcorresponding to a changing of a number of cells within the particularselected array; and changing the number of cells within the selectedarray based on the second input and maintaining the number of cells inother arrays within the cell matrix, wherein a complete, single playbackof the selected array is synchronous with the other arrays within thecell matrix when the number of cells within the selected array is thesame as the number of cells in the other arrays, and wherein thecomplete, single playback of the selected array is asynchronous with theother arrays within the cell matrix for at least a portion of thecomplete, single playback when the number of cells within the selectedarray is different than the number of cells in the other arrays.
 2. Themethod of claim 1 wherein the second input causes a playback start pointof the selected array to move from a first location at a first cell ofthe selected array to a second location at a second cell of the selectedarray.
 3. The method of claim 2 wherein the second input includes atouch input corresponding to a detected touch moving from the firstlocation to the second location.
 4. The method of claim 1 furthercomprising: triggering a playback of the audio sample corresponding toeach selected cell within the matrix based on each selected cell'ssequential order within its array and the selected cell's sequentialorder with respect to other cells within the cell matrix.
 5. The methodof claim 4 wherein playback of each array of cells within the cellmatrix begins simultaneously with a first cell at a beginning of eacharray of cells.
 6. The method of claim 1 further comprising: triggeringa playback of the audio sample corresponding to each selected cell basedon the number of cells within each selected cell's corresponding row; ortriggering a playback of the audio sample corresponding to each selectedcell based on a column of the selected cell within the cell matrix. 7.The method of claim 1 wherein the matrix corresponds to a sequencedrhythmic pattern.
 8. The method of claim 1 wherein the second inputcorresponds to a removing of one or more cells from a beginning or anend of the selected array; or wherein the second input corresponds to achange in a playback timing of a beginning or an end of the selectedarray.
 9. A system comprising: one or more processors; and one or morenon-transitory computer-readable storage mediums containing instructionsto cause the one or more processors to perform operations including:receiving a first input corresponding to a selection of an array ofuniformly-sized cells within a cell matrix, the cell matrix includingtwo or more arrays of cells, wherein each cell of the cell matrix is atrigger, wherein each cell is arranged in a sequential arrangementwithin its corresponding array of cells, wherein each array of the cellmatrix is assigned to audio sample data stored in a computer-readablemedium that, when triggered by one of the cells within the correspondingarray, causes the audio sample data to output corresponding audio, andeach cell within its particular array of the cell matrix, in response tobeing selected for playback and upon being triggered to begin playback,causes the audio sample data corresponding to the cell's particulararray to be played, receiving a second input corresponding to a changingof a number of cells within the particular selected array; and changingthe number of cells within the selected array based on the second inputand maintaining the number of cells in other arrays within the cellmatrix, wherein a complete, single playback of the selected array issynchronous with the other arrays within the cell matrix when the numberof cells within the selected array is the same as the number of cells inthe other arrays, and wherein the complete, single playback of theselected array is asynchronous with the other arrays within the cellmatrix for at least a portion of the complete, single playback when thenumber of cells within the selected array is different than the numberof cells in the other arrays.
 10. The system of claim 9 wherein thesecond input causes a playback start point of the selected array to movefrom a first location at a first cell of the selected array to a secondlocation at a second cell of the selected array.
 11. The system of claim10 wherein the second input includes a touch input corresponding to adetected touch moving from the first location to the second location.12. The system of claim 9 wherein the instructions further cause the oneor more processors to perform operations including: triggering aplayback of the audio sample corresponding to each selected cell withinthe matrix based on each selected cell's sequential order within itsarray and the selected cell's sequential order with respect to othercells within the cell matrix.
 13. The system of claim 12 whereinplayback of each array of cells within the cell matrix beginssimultaneously with a first cell at a beginning of each array of cells.14. The system of claim 9 wherein the instructions further cause the oneor more processors to perform operations including: triggering aplayback of the audio sample corresponding to each selected cell basedon the number of cells within each selected cell's corresponding row; ortriggering a playback of the audio sample corresponding to each selectedcell based on a column of the selected cell within the cell matrix. 15.The system of claim 9 wherein the second input corresponds to a removingof one or more cells from a beginning or an end of the selected array;or wherein the second input corresponds to a change in a playback timingof a beginning or an end of the selected array.
 16. A non-transitorycomputer-program product tangibly embodied in a machine-readablenon-transitory storage medium including instructions to cause aprocessor to: receive a first input corresponding to a selection of anarray of uniformly-sized cells within a cell matrix, the cell matrixincluding two or more arrays of cells, wherein each cell of the cellmatrix is a trigger, wherein each cell is arranged in a sequentialarrangement within its corresponding array of cells, wherein each arrayof the cell matrix is assigned to audio sample data stored in acomputer-readable medium that, when triggered by one of the cells withinthe corresponding array, causes the audio sample data to outputcorresponding audio, and each cell within its particular array of thecell matrix, in response to being selected for playback and upon beingtriggered to begin playback, causes the audio sample data correspondingto the cell's particular array to be played, receive a second inputcorresponding to a changing of a number of cells within the particularselected array; and change the number of cells within the selected arraybased on the second input and maintain the number of cells in otherarrays within the cell matrix, wherein a complete, single playback ofthe selected array is synchronous with the other arrays within the cellmatrix when the number of cells within the selected array is the same asthe number of cells in the other arrays, and wherein the complete,single playback of the selected array is asynchronous with the otherarrays within the cell matrix for at least a portion of the complete,single playback when the number of cells within the selected array isdifferent than the number of cells in the other arrays.
 17. Thecomputer-program product of claim 16 wherein the second input causes aplayback start point of the selected array to move from a first locationat a first cell of the selected array to a second location at a secondcell of the selected array.
 18. The computer-program product of claim 17wherein the second input includes a touch input corresponding to adetected touch moving from the first location to the second location.19. The computer-program product of claim 16 wherein the instructionsfurther cause the one or more processors to perform operationsincluding: triggering a playback of the audio sample corresponding toeach selected cell within the matrix based on each selected cell'ssequential order within its array and the selected cell's sequentialorder with respect to other cells within the cell matrix.
 20. Thecomputer-program product of claim 19 wherein playback of each array ofcells within the cell matrix begins simultaneously with a first cell ata beginning of each array of cells.
 21. The computer-program product ofclaim 16 wherein the instructions further cause the one or moreprocessors to perform operations including: triggering a playback of theaudio sample corresponding to each selected cell based on the number ofcells within each selected cell's corresponding row; or triggering aplayback of the audio sample corresponding to each selected cell basedon a column of the selected cell within the cell matrix.
 22. Thecomputer-program product of claim 16 wherein the second inputcorresponds to a removing of one or more cells from a beginning or anend of the selected array; or wherein the second input corresponds to achange in a playback timing of a beginning or an end of the selectedarray.